package com.flansmod.apocalypse.client.model;

import java.util.Random;

import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.WorldRenderer;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.entity.Entity;
import net.minecraft.util.ResourceLocation;

public class RenderTeleporter extends Render 
{
	private ModelTeleporter model;
	private static final ResourceLocation texture = new ResourceLocation("flansmodapocalypse", "textures/entity/Teleporter.png");
	private static int[] randomiser = new int[] { 145, 167, 324, 541 };	
	
	public RenderTeleporter(RenderManager renderManager) 
	{
		super(renderManager);
		model = new ModelTeleporter();
	}
	
	public void doRender(Entity entity, double x, double y, double z, float p_76986_8_, float partialTicks)
	{        
		bindEntityTexture(entity);
		
        RenderHelper.disableStandardItemLighting();
        //GlStateManager.disableTexture2D();
        GlStateManager.shadeModel(7425);
        //GlStateManager.enableBlend();
        //GlStateManager.blendFunc(770, 1);
        //GlStateManager.disableAlpha();
        GlStateManager.enableCull();
        //GlStateManager.depthMask(false);
        GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
        
        for(int i = 0; i < 4; i++)
        {
	        float scaleX = 0.4F * (float)Math.sin((entity.ticksExisted + partialTicks) * 0.1F + 1.7F * randomiser[i]) + 1.0F;
	        float scaleY = 0.4F * (float)Math.cos((entity.ticksExisted + partialTicks) * 0.114F + 1.145F + 0.35F * randomiser[(i + 1) % 4]) + 1.0F;
	        float scaleZ = 0.4F * (float)Math.cos((entity.ticksExisted + partialTicks) * 0.121F + 0.7545F - 11F * randomiser[i]) + 1.0F;
	        float rotation = 100F * (float)Math.cos((entity.ticksExisted + partialTicks) * 0.000121F * randomiser[(i + 2) % 4]);
	        GlStateManager.pushMatrix();
	        GlStateManager.translate(0.0F, 1.0F, 0.0F);
	        GlStateManager.translate(x, y, z);
	        GlStateManager.rotate(rotation, 1F, 1F, 0F);
	        GlStateManager.rotate(100F * (float)Math.sin((entity.ticksExisted + partialTicks) * 0.000173F * randomiser[(i + 2) % 4]), 1F, 0F, 1F);
	        GlStateManager.scale(-scaleX, scaleY, scaleZ);
	        model.render(0.0625F);
	        GlStateManager.popMatrix();
        }
        
        GlStateManager.depthMask(true);
        GlStateManager.disableCull();
        GlStateManager.disableBlend();
        GlStateManager.shadeModel(7424);
        GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
        GlStateManager.enableTexture2D();
        GlStateManager.enableAlpha();
        RenderHelper.enableStandardItemLighting();
	}

	@Override
	protected ResourceLocation getEntityTexture(Entity entity) 
	{
		return texture;
	}
}
